@echo off
rem ############################################################
rem # Nom     : export_file.bat                                #
rem # Creation : 2010-03-30                                    #
rem # Modif    : 2013-07-23                                    #
rem # Version  : 2.0                                           #
rem # Auteur   : DPI-CRR                                       #
rem # Env.     : Qualif                                        #
rem # ---------------------------------------------------------#
rem # Script d'export des fichiers                             #
rem ############################################################
rem
rem     Traitement d'export des fichiers
rem     Parametres attendus:
rem         %1: nom du fichier en entrée (ex: gw2raaaa.gw2, gw2eaaaa.md, gw2saaaa.md)

setlocal EnableDelayedExpansion

REM ######################################
REM # Variables globales d'environnement #
REM ######################################
SET REP_RACINE=D:\gw2\gw2adm
D:
call %REP_RACINE%\profile.bat
CALL %SMID%\horodatage.bat


REM ###################
REM # Variable Locale #
REM ###################
SET filename=%1
SET filelist=%SMID%\export_file.lst

IF "%filename%"=="" ( GOTO usage )

SET returncode=0
SET logfile=%REP_TRACE%\export_file.log
SET seidexport=%SRVCFT%\export


REM ######################
REM # Debut du Programme #
REM ######################

REM Vérification de la définition de %filename% dans %filelist%
SET add=0
SET "definition="

FOR /F "delims=" %%a IN ('findstr /B /C:"%filename%:" %filelist%') DO (
    SET definition=%%a
	REM SET definition
	SET /a add+=1
	REM SET add
)

REM action en fonction du nombre d entree %filename% trouvée dans %filelist%
IF "%add%"=="0" ( GOTO entrynotfound ) 
IF "%add%"=="1" ( GOTO entryok ) 
IF "%add%" gtr "1" ( GOTO entrytoo ) 

REM %filename% OK dans %filelist%
:entryok
ECHO fichier = %filename% \ definition = %definition%
goto split

REM split de la ligne trouvée dans %filelist%
:split
@echo off
FOR /F "tokens=1-7 delims=:" %%a in ("%definition%") do (
	SET specificdir=%%b
	ECHO  split : specificdir = "!specificdir!"
)	
SET dirsource=%REP_EXPORT%\%specificdir%
GOTO check

:check
REM vérifie si le SEID est accéssible
IF NOT EXIST %seidexport% ( GOTO checkseidko )
REM  vérifie si le fichier %filename% existe sous %dirsource%
IF NOT EXIST %dirsource%\%filename% ( GOTO checkfilesourceko )
REM  vérifie si le fichier %filename% existe sous %seidexport%
IF EXIST %seidexport%\%filename% ( GOTO checkfiledestexist )
GOTO export

REM réalisation de l export de %filename%
:export
for %%A in (%dirsource%\%filename%) do SET size=%%~zA

COPY "%dirsource%\%filename%"  "%seidexport%\%filename%.tmp"
ECHO  COPY %dirsource%\%filename%"  "%seidexport%\%filename%.tmp
IF NOT %ERRORLEVEL%==0 ( GOTO exportkocopy )
MOVE "%seidexport%\%filename%.tmp" "%seidexport%\%filename%"
ECHO  MOVE %dirsource%\%filename%"  "%seidexport%\%filename%.tmp
IF NOT %ERRORLEVEL%==0 ( GOTO exportkomove )
DEL "%dirsource%\%filename%"
CALL :logfunction "[0] [taille !size!o] - Deplacement de %dirsource% vers %seidexport% OK"
GOTO end


REM #######
REM # LOG #
REM #######

REM fonction pour ecrire dans la log
:logfunction
SET message=%~1
ECHO %ANNEE%-%MOIS%-%JOUR% %HEURE%:%MIN%:%SEC% : %filename% - %message% >> %logfile%
GOTO :EOF

REM Usage
:usage
ECHO USAGE : export_file.bat [filename]
GOTO :end

REM %filename% non defini dans  %filelist%
:entrynotfound
CALL :logfunction "[1] - Definition non trouvee dans la liste %filelist%"
GOTO end

REM %filename% défini plus d'une fois dans %filelist%
:entrytoo
CALL :logfunction "[2] - Trop de definition differente pour le fichier dans la liste %filelist%"
GOTO end

REM sortie en code retour = 1 si le repertoire export du SEID est inaccessible
:checkseidko
CALL :logfunction "[3] - Impossible d acceder au monatge samba du SEID [%seidexport%]"
SET returncode=1
GOTO end

REM %filename% non trouvé dans le répertoire source
:checkfilesourceko
CALL :logfunction "[4] - Fichier non present sous %dirsource%"
goto end

REM un fichier %filename% est deja en attente dans l export du SEID
:checkfiledestexist
CALL :logfunction "[5] - Un fichier est deja present sous %seidexport%"
SET returncode=1
GOTO end

REM Probleme lors de la COPY de l export
:exportkocopy
CALL :logfunction "[6.1] - Probleme lors de la copie du fichier source"
SET returncode=1
GOTO end

REM Probleme lors du MOVE de l export
:exportkomove
CALL :logfunction "[6.2] - Probleme lors du deplacement du ficher .tmp"
SET returncode=1
GOTO end


REM Sortie
:end
EXIT %returncode%